#pragma once

#include<iostream>
#include <time.h>
#define INFO 0
#define DBG 1
#define ERR 2
#define DEFAULT_LEVEL DBG
#define LOG(level,format,...) do{\
    if(DEFAULT_LEVEL>level) break;\
    time_t t=time(nullptr);\
    struct tm *lt=localtime(&t);\
    char buffer[32]={0};\
    strftime(buffer,31,"%H:%M:%S",lt);\
    fprintf(stdout,"[%s %s %d]" format " \n",buffer,__FILE__,__LINE__,##__VA_ARGS__);\
}while(0)

#define ILOG(format,...) LOG(INFO,format,##__VA_ARGS__)
#define DLOG(format,...) LOG(DBG,format,##__VA_ARGS__)
#define ELOG(format,...) LOG(ERR,format,##__VA_ARGS__)